<?php 
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/parameters/ParameterGetter.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/exceptions/FormulaireException.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/writerJSON/WriterJSON.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/outils/string/StringUtils.php';
	include_once $_SERVER["DOCUMENT_ROOT"].'/service/uc/gererrole/GererRoleService.php';

	class GererRoleAction {
		public static function ajouter() {
			$roleVO = GererRoleService::ajouterRole();
			ParameterGetter::setSessionParameter("roleVO", $roleVO);
			WriterJSON::echoSuccessState();
		}
		
		public static function modifier() {
			$id = ParameterGetter::getRequestParameter("id", true);
			$roleVO = GererRoleService::modifierRole($id);
			ParameterGetter::setSessionParameter("roleVO", $roleVO);	
			WriterJSON::echoDonnees(array("code" => $roleVO->code, "libelle" => $roleVO->libelle));
		}
		
		public static function getIdModifie() {
			$roleVO = ParameterGetter::getSessionParameter("roleVO", true);
			$id = $roleVO->id;
			WriterJSON::echoDonnees (array("id" => "$id"));
		}
		
		public static function valider() {
			$roleVO = ParameterGetter::getSessionParameter("roleVO", true);
			$roleVO->code = ParameterGetter::getRequestParameter("code", true);
			$roleVO->libelle = ParameterGetter::getRequestParameter("libelle", true);
			
			GererRoleAction::verifierRoleAvantValidation($roleVO);
			GererRoleService::validerRole($roleVO);
			ParameterGetter::removeSessionParameter("roleVO");
			WriterJSON::echoSuccess ("La rôle a bien été ajouté/modifié");
		}
		
		public static function annuler() {
			ParameterGetter::removeSessionParameter("roleVO");
			WriterJSON::echoSuccessState();
		}
		
		public static function supprimer() {
			$id = ParameterGetter::getRequestParameter("id", true);
			GererRoleService::supprimerRole($id);
			WriterJSON::echoSuccess ("La rôle a bien été supprimé");
		}
		
		private static function verifierRoleAvantValidation($roleVO) {
			$exception = new FormulaireException();
			if (StringUtils::isEmpty($roleVO->code)) {
				$exception->ajouterChampNonRenseigne("Code");
			}
			if (StringUtils::isEmpty($roleVO->libelle)) {
				$exception->ajouterChampNonRenseigne("Libellé");
			}
			
			if ($exception->contientErreurs()) {
				throw $exception;
			}
		}
	}
?>